Data processing systems may comprise a host computing device and a network interface device. The network interface device is configured to provide an interface to a network to allow the host computing device to be able to receive data from other host computing devices via the network.
The data which is received may be in the form of data packets. Protocol processing needs to be performed on the data packets in order for the host computing device to be able to consume the data in the data packets.
One example of a streaming or transport layer protocol is TCP. With the TCP protocol, data is transmitted by encapsulating it in TCP segments that may be dropped, retransmitted and reordered. As a result a stream of data may not arrive at the receiver in the correct sequence. Thus, TCP streams require that the protocol stack managing the streams can handle out of order packets to generate a reliable byte stream for upper layer protocols and applications.
The data packet in addition to being transport protocol processed may also be need to be upper layer protocol processed. The transport layer TCP protocol may be processed prior to any upper layer protocols—for example, TCP data packets are correctly reassembled into an ordered stream so as to allow the payload data of those data packets to be re-formed and the upper layer messages extracted for processing by an upper layer protocol stack.